<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .clock-wrapper {
            width: 200px;
            margin: 50px auto;
            text-align: center;
        }

        .clock-wrapper .clock-time {
            font-size: 40px;
            line-height: 60px;
            height: 60px;
            font-family: "clockIcon";
        }

        .clock-wrapper .clock-date {
            font-size: 16px;
            line-height: 20px;
            height: 20px;
        }

        @font-face {
            font-family: "clockIcon";
            src: url("../font/clockicons.woff2");
        }

        .clock-title {
            display: flex;
            justify-content: space-evenly;
        }

        button {
            padding: 5px 10px;
        }

        .ms {
            font-size: 24px;
        }
    </style>
</head>

<body>
    <div class="clock-wrapper">
        <div class="clock-title">
            <button class="start">开始</button>
            <button class="pause">暂停</button>
            <button class="reset">重置</button>
        </div>
        <div class="clock-time">
            00:00<span class="ms">.00</span>
        </div>
    </div>
</body>
<script>
    var start = document.getElementsByClassName("start")[0];
    var pause = document.getElementsByClassName("pause")[0];
    var reset = document.getElementsByClassName("reset")[0];
    var clockTime = document.getElementsByClassName("clock-time")[0];


    // 问题1:
    // 变量跨作用域 => 一个函数作用域中声明,另一个函数作用域中使用?  
    // 解决方法:
    // 将变量提取到两个作用域均可以访问的位置

    // 问题2: 
    // 已经关闭的计时器无法重新启动, 只能启动一个新的

    // 问题3:
    // 在函数或事件中使用计时器 => 注意: 事件重复触发/函数重复调用 => 都可能启动新的计时器 ,(timer变量只能存一个  后面的会覆盖前面的 => 只能清除最后一个计时器,有多余的无法清除)

    // 解决方法:  保证该功能下计时器只能同时启动一个
    // (1) 立一个flag(状态) 记录计时器是否启动  => 已经启动就不在重复启动

    var ms = 0;  // 全局变量毫秒(计时)
    var timer = null;
    var isStart = false; // 是否启动(默认false)

    start.onclick = function () {

        if (isStart) { // 如果已经启动  => 不执行后续内容
            return false;
        }

        // 点击开始按钮  开始计时
        timer = setInterval(function () {
            ms += 10;
            // console.log(ms);

            var milli = ms % 1000 / 10;
            var second = parseInt(ms / 1000) % 60;
            var minute = parseInt(ms / 1000 / 60);

            clockTime.innerHTML = `${beauty(minute)}:${beauty(second)}<span class="ms">.${beauty(milli)}</span>`;
        }, 10);
        console.log(timer);

        isStart = true;

    }
    pause.onclick = function () {
        clearInterval(timer);
        isStart = false;
    }
    reset.onclick = function () {
        clearInterval(timer);
        isStart = false;
        ms = 0;  // 全局变量毫秒(计时)
        timer = null;
        clockTime.innerHTML = `00:00<span class="ms">.00</span>`
    }






    function beauty(num) {
        return num < 10 ? "0" + num : num;
    }




</script>

</html>